import apiClient from './config'

/**
 * 数据分析相关 API
 */
export const analyticsAPI = {
  /**
   * 获取总体统计数据
   * @returns {Promise} 总览数据
   */
  getOverview() {
    return apiClient.get('/analytics/overview')
  },

  /**
   * 获取站点统计数据
   * @returns {Promise} 站点统计数据
   */
  getStationsStats() {
    return apiClient.get('/analytics/stations-stats')
  },

  /**
   * 获取站点排行榜
   * @returns {Promise} 站点排行数据
   */
  getStationsRanking() {
    return apiClient.get('/analytics/stations-ranking')
  },

  /**
   * 获取订单状态统计
   * @returns {Promise} 订单状态统计数据
   */
  getOrdersStatusStats() {
    return apiClient.get('/analytics/orders-status-stats')
  },

  /**
   * 获取订单趋势分析
   * @param {Object} params - 查询参数
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @param {string} params.groupBy - 分组方式（day/week/month）
   * @returns {Promise} 订单趋势数据
   */
  getOrderTrends(params = {}) {
    return apiClient.get('/analytics/orders/trends', { params })
  },

  /**
   * 获取收益分析
   * @param {Object} params - 查询参数
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @param {string} params.groupBy - 分组方式（day/week/month）
   * @returns {Promise} 收益分析数据
   */
  getRevenueAnalysis(params = {}) {
    return apiClient.get('/analytics/revenue', { params })
  },

  /**
   * 获取物品回收统计
   * @param {Object} params - 查询参数
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @param {string} params.category - 物品分类过滤
   * @returns {Promise} 物品统计数据
   */
  getItemsStats(params = {}) {
    return apiClient.get('/analytics/items', { params })
  },

  /**
   * 获取站点性能分析
   * @param {Object} params - 查询参数
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @param {number} params.stationId - 特定站点ID（可选）
   * @returns {Promise} 站点性能数据
   */
  getStationPerformance(params = {}) {
    return apiClient.get('/analytics/stations/performance', { params })
  },

  /**
   * 获取用户行为分析
   * @param {Object} params - 查询参数
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @param {string} params.userType - 用户类型（customer/station_manager）
   * @returns {Promise} 用户行为数据
   */
  getUserBehaviorAnalysis(params = {}) {
    return apiClient.get('/analytics/users/behavior', { params })
  },

  /**
   * 获取地理分布分析
   * @param {Object} params - 查询参数
   * @param {string} params.type - 分析类型（orders/stations/users）
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @returns {Promise} 地理分布数据
   */
  getGeographicDistribution(params = {}) {
    return apiClient.get('/analytics/geographic', { params })
  },

  /**
   * 获取时间段分析
   * @param {Object} params - 查询参数
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @param {string} params.dimension - 分析维度（hour/day/month）
   * @returns {Promise} 时间段分析数据
   */
  getTimeAnalysis(params = {}) {
    return apiClient.get('/analytics/time', { params })
  },

  /**
   * 获取客户价值分析
   * @param {Object} params - 查询参数
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @param {string} params.sortBy - 排序方式（order_count/total_amount/avg_amount）
   * @returns {Promise} 客户价值数据
   */
  getCustomerValueAnalysis(params = {}) {
    return apiClient.get('/analytics/customers/value', { params })
  },

  /**
   * 获取物流效率分析
   * @param {Object} params - 查询参数
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @param {number} params.stationId - 站点ID过滤（可选）
   * @returns {Promise} 物流效率数据
   */
  getLogisticsEfficiency(params = {}) {
    return apiClient.get('/analytics/logistics/efficiency', { params })
  },

  /**
   * 获取库存周转分析
   * @param {Object} params - 查询参数
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @param {number} params.stationId - 站点ID过滤（可选）
   * @returns {Promise} 库存周转数据
   */
  getInventoryTurnover(params = {}) {
    return apiClient.get('/analytics/inventory/turnover', { params })
  },

  /**
   * 获取预测分析
   * @param {Object} params - 查询参数
   * @param {string} params.type - 预测类型（orders/revenue/demand）
   * @param {number} params.periods - 预测周期数
   * @param {string} params.unit - 时间单位（day/week/month）
   * @returns {Promise} 预测数据
   */
  getForecastAnalysis(params = {}) {
    return apiClient.get('/analytics/forecast', { params })
  },

  /**
   * 获取对比分析
   * @param {Object} params - 查询参数
   * @param {string} params.type - 对比类型（period/station/category）
   * @param {string} params.currentStart - 当前时期开始日期
   * @param {string} params.currentEnd - 当前时期结束日期
   * @param {string} params.compareStart - 对比时期开始日期
   * @param {string} params.compareEnd - 对比时期结束日期
   * @returns {Promise} 对比分析数据
   */
  getComparativeAnalysis(params = {}) {
    return apiClient.get('/analytics/comparative', { params })
  },

  /**
   * 获取异常检测分析
   * @param {Object} params - 查询参数
   * @param {string} params.type - 检测类型（orders/revenue/logistics）
   * @param {string} params.startDate - 开始日期
   * @param {string} params.endDate - 结束日期
   * @param {number} params.threshold - 异常阈值
   * @returns {Promise} 异常检测数据
   */
  getAnomalyDetection(params = {}) {
    return apiClient.get('/analytics/anomaly', { params })
  },

  /**
   * 生成分析报告
   * @param {Object} reportConfig - 报告配置
   * @param {string} reportConfig.type - 报告类型（daily/weekly/monthly/custom）
   * @param {string} reportConfig.startDate - 开始日期
   * @param {string} reportConfig.endDate - 结束日期
   * @param {Array} reportConfig.sections - 报告章节
   * @param {string} reportConfig.format - 导出格式（pdf/excel）
   * @returns {Promise} 报告文件
   */
  generateReport(reportConfig) {
    return apiClient.post('/analytics/reports', reportConfig, {
      responseType: 'blob'
    })
  },

  /**
   * 获取实时监控数据
   * @returns {Promise} 实时监控数据
   */
  getRealTimeMonitoring() {
    return apiClient.get('/analytics/realtime')
  },

  /**
   * 获取KPI指标
   * @param {Object} params - 查询参数
   * @param {string} params.period - 时间周期
   * @param {Array} params.metrics - 指标列表
   * @returns {Promise} KPI数据
   */
  getKPIMetrics(params = {}) {
    return apiClient.get('/analytics/kpi', { params })
  },

  /**
   * 保存自定义分析配置
   * @param {Object} config - 分析配置
   * @param {string} config.name - 配置名称
   * @param {Object} config.settings - 配置设置
   * @returns {Promise} 保存结果
   */
  saveAnalysisConfig(config) {
    return apiClient.post('/analytics/configs', config)
  },

  /**
   * 获取保存的分析配置列表
   * @returns {Promise} 配置列表
   */
  getAnalysisConfigs() {
    return apiClient.get('/analytics/configs')
  },

  /**
   * 删除分析配置
   * @param {number} configId - 配置ID
   * @returns {Promise} 删除结果
   */
  deleteAnalysisConfig(configId) {
    return apiClient.delete(`/analytics/configs/${configId}`)
  }
}
